import os,sys,yaml
pro=os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))))
sys.path.append(os.path.join(pro,'easy_edit','_base_tool',"python"))
from tool_sqlite3 import base_db

print(pro)
class main:
    def __init__(self,dir_path=None,db_name='前端组件数据库'):
        if dir_path is None:
            self.组件存放文件夹=os.path.join(pro,'easy_edit','_web','vue_template_store')
        else:
            self.组件存放文件夹=dir_path
        self.config={db_name:{
                    'id':{
                                        '名称':'id',
                                        '备注':'自增id',
                                        '主键':True, 
                                        '自增长':True,
                                        '索引':False,
                                        '字段类型':'INTEGER',
                                        '字段长度':None,
                                        },
                    'path':{
                                        '名称':'路径',
                                        '备注':'组件存储路径',
                                        '主键':False, 
                                        '自增长':False,
                                        '索引':True,
                                        '字段类型':'TEXT',
                                        '字段长度':[0,30],
                                        },
                    'user_id':{
                                        '名称':'用户id',
                                        '备注':'用户id',
                                        '主键':False, 
                                        '自增长':False,
                                        '索引':True,
                                        '字段类型':'TEXT',
                                        '字段长度':[0,10],
                                        },
                            
                    'dir1_id':{
                                        '名称':'dir1_id',
                                        '备注':'目录1id',
                                        '主键':False, 
                                        '自增长':False,
                                        '索引':True,
                                        '字段类型':'TEXT',
                                        '字段长度':[0,10],
                                        },
                            
                    'dir2_id':{
                                        '名称':'dir2_id',
                                        '备注':'目录2id',
                                        '主键':False, 
                                        '自增长':False,
                                        '索引':True,
                                        '字段类型':'TEXT',
                                        '字段长度':[0,10],
                                        },
                    'temp_id':{
                                        '名称':'temp_id',
                                        '备注':'组件id',
                                        '主键':False, 
                                        '自增长':False,
                                        '索引':True,
                                        '字段类型':'TEXT',
                                        '字段长度':[0,10],
                                        },
                    'version':{
                                        '名称':'组件版本',
                                        '备注':'组件的最高版本',
                                        '主键':False, 
                                        '自增长':False,
                                        '索引':True,
                                        '字段类型':'TEXT',
                                        '字段长度':[0,10],
                                        },
                            
                            
                        'temp_name':{
                                            '名称':'组件名称',
                                            '备注':'组件名称',
                                            '主键':False, 
                                            '自增长':False,
                                            '索引':None,
                                            '字段类型':'TEXT',
                                            '字段长度':[0,30],
                                            },
                }}
        
        self.db_path=os.path.join(pro,'db_dir')
        
        self.b=base_db(db_data=self.config,db_dir_path=self.db_path)
    #检查文件夹是否存在不存在则创建文件夹
    def check_dir(self,user_id,dir1_id):
        #用户目录
        user_dir_path=os.path.join(self.组件存放文件夹,'a'+str(user_id),"a"+str(dir1_id))
        yaml_path=os.path.join(user_dir_path,'main.yaml')
        if not os.path.exists(user_dir_path):
            try:
                os.mkdir(user_dir_path)
                with open(yaml_path, 'w',encoding='utf-8') as file:  
                    yaml.dump({"dir1_index":0}, file, default_flow_style=False, allow_unicode=True)  
            except:pass
        return yaml_path
    def run(self,user_id,dir1_id,dir2_id,temp_name,temp_version_name=None):
        #-1获取目录2 路径
        dir2_path=os.path.join(self.组件存放文件夹,'a'+str(user_id),"a"+str(dir1_id),"a"+str(dir2_id))
        #-2获取目录2配置
        yaml_path=os.path.join(dir2_path,'main.yaml')
        #-3读取目录2配置下的组件目录id
        with open(yaml_path, 'r',encoding='utf-8') as file:  
            data = yaml.safe_load(file)
        data['temp_index']+=1
        #-4更新目录2配置
        with open(yaml_path, 'w',encoding='utf-8') as file:  
            yaml.dump(data, file, default_flow_style=False, allow_unicode=True)  
        #-4创建组件目录
        mkdir_path=os.path.join(dir2_path,'a'+str(data['temp_index']))
        os.mkdir(mkdir_path)
        #-4创建组件目录配置文件
        mkfile_path=os.path.join(mkdir_path,'main.yaml')
        write_data={"name":temp_name,'version':0,"temp_id":str(data['temp_index'])}
        with open(mkfile_path,'w',encoding='utf-8')as f:
            yaml.dump(write_data, f, default_flow_style=False, allow_unicode=True)
        #-5创建组件目录下的历史文件夹目录
        history_dir=os.path.join(mkdir_path,'history')
        os.mkdir(history_dir)
        #-6创建第一个版本
        first_version_path=os.path.join(history_dir,'a0')
        os.mkdir(first_version_path)
        #-7创建第一个版本下的配置文件
        first_version_yaml=os.path.join(first_version_path,'main.yaml')
        if temp_version_name is None:temp_version_name='0'
        with open(first_version_yaml,'w',encoding='utf-8')as f:
            yaml.dump({"version_name":temp_version_name}, f, default_flow_style=False, allow_unicode=True)
        self.b.post(info={'path':f'{user_id}-{dir1_id}-{dir2_id}-{data["temp_index"]}','user_id':user_id,'dir1_id':dir1_id,"dir2_id":dir2_id,"temp_id":data['temp_index'],"version":"0","temp_name":temp_name})
        return {"type":"success","path":first_version_path}
if __name__=="__main__":    
    obj=main()
    for i in range(100):
      obj.run('2','1','1','前端小控件','第一个版本')